// 引入必要的模块
const express = require('express');
const dotenv = require('dotenv');
const cors = require('cors')
// 加载环境变量
dotenv.config();

// 创建Express应用
const app = express();
const PORT = process.env.PORT || 3000;

// 解析白名单
const WHITELIST = process.env.WHITELIST ? process.env.WHITELIST.split(',') : [];

function normalizeIp(ip) {
    // 如果是IPv4映射到IPv6，则转换为纯IPv4
    if (ip.startsWith('::ffff:')) {
        return ip.substring(7); // 去掉前缀 "::ffff:"
    }
    return ip;
}
// 中间件：检查客户端IP是否在白名单中
function checkWhitelist(req, res, next) {
    const clientIp = normalizeIp(req.ip || req.connection.remoteAddress);
    if (WHITELIST.includes(clientIp)) {
        return next(); // 继续处理请求
    }
    res.status(403).send('你无资格访问');
}

// 使用中间件
app.use(checkWhitelist);
app.use(cors())

// 定义一个简单的路由来接收请求
app.get('/api/test', async (req, res) => {
    let data = {
      msg: 'HelloWorld'
    }
    setTimeout(() => {
        res.json(data)
    }, 2000);
});

// 监听端口
app.listen(PORT, () => {
    console.log(`Server is running on port ${PORT}`);
});